FC图文汉化教程 —— 烈火暴龙(星组)

http://www.starteams.cn/viewthread.php?tid=11597&extra=page=1

Part 1 基础知识 |  Part 2 实例演示 |  Part 3 小技巧 |  回顶部
感谢:MS组提供的资料、以及madcell写的大字教程(私自从madcell的博客转过来了,madcell不要骂我啊~)
更新记录
【08-10-4】教程完成
【09-2-15】对“2.2、文本的汉化”中的一些步骤进行补充说明

    这篇教程主要是小字体汉化,没有涉及6502汇编,不要说小字汉化就无视了,毕竟6502不是人人都能学会的。
    这个教程应该是属于小白级的了,就算你没有基础,通过边看教程边实践也能很快的掌握技巧。
    借用FC汉化前辈MM之神的话:“虽然我们的技术含量不高,但希望大众化,给那些喜欢的朋友们分享”
    有问题请回贴,我会尽量解答。(涉及汇编、扩容之类的就不用问了,那个我也不会)

PS1:教程是根据暴龙自己的汉化经验来写的,暴龙自身水平有限,可能有错误或遗漏,欢迎大家批评指正。
PS2:一些功能相近的工具,大家根据自己的喜好选择即可,不必跟教程中一模一样。
PS3:部分资料来源网络(MS汉化组及Madcell的博客)

写在前面:

汉化是一件很累的事,即使是简单的FC汉化也是如此,再简单的FC ROM汉化可能也要1-2天,请做好心里准备。
本教程有小字体详细的汉化过程也有基本的大字体汉化方法
如果决心要汉化一款游戏的话,那么就要对汉化的游戏负责,最好不要半途而废,也不要只做了个半成品就仍出来,比如还有一堆可以解决却没解决的乱码,BUG之类的。
要汉化FC的话暴龙推荐几个工具:

必备工具:

★Tile察看工具:1、Tlp v1.1 2、CrystalTile 1
(用来察看和修改tile的工具,2个工具各有千秋,大家可以根据自己的喜好和习惯下载)
★FC调试工具:FC DEBUG v0.0.6.7
(这个可以很方便的察看到汉化所需的绝大多数元素,也是汉化的主要调试工具,只可惜不支持一些MAPPER比较怪的ROM。因为是VirtuaNES的debug版本,所以可以兼容VNES的即时存档以及电池存档)
★十六进制编辑器
(用这个来修改ROM,如果你用CT的话就不用找了,CT里面有自带)

辅助工具:

★图片处理工具
1、Windows画板(用来设计简单的标题LOGO或是画字模等等,总之用处很多,而且使用方便)
2、PhotoShop(一般用来设计一些比较精致的LOGO用,不过要注意调色盘)
★字模生成工具
1、汉化探针 v0.05A(用来画16x8、16x16字模用的)
2、空气组的8x16字模制作器Matrix Loader(汉化某些游戏会用到)
3、支持8x8小字的宋体(用CrystalTile来画字模,汉化探针不支持)
    1.解压后把Small SimSun.ttf放到C:\windows\fonts\里
       该字体可以跟系统自带的宋体共存
       安装完成后名字为Small SimSun
    2.用CrystalTile 1的话字体大小设为小五,CrystalTile 2的设六号

教程索引

Part 1 基础知识
├1.1、文本相关知识
├1.2、图片相关知识
└1.3、一些工具的介绍

Part 2 实例演示
├2.1、汉化准备
├2.2、文本的汉化
├2.3、图片的汉化
  ├2.3.1、非LOGO图片
  └2.3.2、LOGO汉化
└2.4、结束

Part 3 小技巧
├3.1、巧妙增加字库容量
└3.2、伪•大字体

Part 1 基础知识

1.1、文本相关知识

1、FC的单个tile通常是单字节(当然也有例外),范围是00~FF。
2、tile分为2种,分别为背景和精灵(范围都是00~FF),而游戏中某个部分的字要嘛就都是背景tile,要嘛都是精灵tile,不会有那种一会背景tile一会精灵tile的字。
3、FC的tile编码不一定是固定的(大部分大字体ROM和一些小字体ROM除外),具体要看程序把tile放在了什么地方。
比如说程序把某个字的tile放在背景tile的0F这里,那么在背景tile没更新前,就一直是0F。等下背景tile被程序更新了(像换场景之类的),这个字tile被放在了9F这里,那么接下来它的编码就是9F,后面以次类推。
4、ROM中文本的排列(这个关系到你能否找到ROM中的文本),根据暴龙的经验,一般有几种情况:
设:一段文本为ABCDE,对应的编码为00 01 02 03 04
                             显示      ROM中编码
(1)    正常:ABCDE - 00 01 02 03 04
(2)    倒转:ABCDE - 04 03 02 01 00
(3)不连续:ABCDE - 00 FF 01 FF 02 FF 03 FF 04
    注释:文本每个字节中间插有一些非文本字符(FF),一般是1字节(也有2字节、3字节,不过不常见)
(4)带坐标:ABCDE – XX XX 00 XX XX 01 XX XX 02 XX XX 03 XX XX 04
    注释1:文本每个字节中间有控制tile显示位置的坐标,一般是2字节(坐标这东西暴龙在汉化《快杰洋枪2》的时候有遇到过,由于时间太久,记得不是很清楚了);
    注释2:与第三类不同的是,第三类中间插的字符一般都是相同的,如FF或FF00之类的。
(5)伪压缩:这个一般是游戏中文字大小为8x8以上才用。格式跟第三类差不多,不过显示tile的方式不同。
(6)压缩:这个最麻烦,要破解才行,不过好在这类ROM不多(一般都是一些文本量大的英文游戏采用),这个就不多解释了,遇到的话基本就判死刑了(除非你会6502)。
(7)加密:这个暴龙没遇到过,是暴龙的同学告诉暴龙的。加密就是把文本通过一个特定的算法转变为乱码文本,以达到加密文本的目的。
举个例子:
    一段文本在游戏中的显示为00 01 02 03
    而在ROM中保存的数据却是04 05 06 07
    假设我把04改成07,那么游戏中的显示就是03 01 02 03
    注释:要找这种文本,要嘛破解出加密算法,要嘛就寻找该文本的附近的文本,再在附近找该文本。

1.2、图片相关知识

FC LOGO汉化目前已知的有四种情况,分别对应下边第8步的①②③④,难度由低到高。
建议先熟练掌握Photoshop,并培养一定的设计思想跟艺术品味。
以下是LOGO汉化的核心部分,分三种情况:

1、直接覆盖(简单):

原标题完整、无错乱,直接把做好的LOGO覆盖上去就行了;

2、对照覆盖(普通):

原标题完整、但错乱,对比原标题的位置,把汉化后的字一小块一小块的放到相应的位置覆盖;
(也可以直接把整块文字覆盖上去,然后再到程序那边调整,下图就是这种做法)

3、压缩覆盖:(原标题是组合形式的)

这种最麻烦,图库一般都很小,所以得尽可能的把汉化后的字简化压缩以节省空间。
确保空间足够后,按照大概位置放回去,再由程序方面调整地址。
(注意不要覆盖到其他无关区域)

4、二级压缩覆盖:(原标题是重叠压缩的)

TLP里边,蓝:第一层;绿:第二层;白:第一层与第二层的交叉(同时属于一、二层)。
PS里边,将这两层分离为独立的两个图层。然后将汉化的LOGO分布放到这两个图层,叠加,交叉部分用白色表示。
做好后导入覆盖,检查、调整地址。

汉化LOGO的一般原则是:
按照原风格、原配色及原字体效果进行设计;符合最基本的视觉效果
(因为原来的LOGO大都是专业的游戏美工精心设计出来的,配色方面也很讲究)
如果时间充裕的话,可以把LOGO设计得更活泼、有个性一些。
(因此即使汉化一个简单的LOGO,至少也得花一两个小时)
另外,FC能显示的颜色是有限的,只有64色。

附:FC颜色表


1.3、一些工具的介绍

1、FC DEBUG

首先,打开FC DEBUG,然后分别打开VRAM和图案
◆VRAM窗口(左):
的是察看背景tile的编码的窗口,⑤所在的位置是调色盘数据,这个一般不用去管它;
◆游戏窗口(右上):
这个不用多解释了;
◆图案窗口(右下):
显示当前游戏画面使用的Tile,点击图案就会在下面的显示相应的Tile ID;


◆背景窗口(左):
点击上面的图案就能显示相应的tile ID及坐标,十分方便。
PS:暴龙的习惯是同时开“图案”及“VRAM”(或“背景”),其他的功能一般用不着,有需要的时候再开就行了。

2、如何用CrystalTile做字模(这里以CT1为例)

打开CT1并载入ROM,然后按下Ctrl+D打开Tile编辑器


记得选择字体——Small SimSun,字号设为小五
在垂直修正那打钩,后面的框里输入1
最后在TBL按钮的右边输入文字,再点击修改Tile就行了(注意:这种方法只能逐字修改)
有一点要注意的是,制作的字模颜色一定要跟原来的一样才行。(CT1右边的工具栏里可以设定颜色)

Part 2 实例演示

首先说一下,这个是暴龙自己的汉化方法,大家汉化的时候可以不必拘泥于此

2.1、汉化前的准备

要汉化的ROM一个(教程里将以Flipull这个游戏为例)
各种工具
    FC调试工具(以FC DEBUG为例);
    Tile察看器(以CT1为例);
    十六进制编辑器(以CT1为例);
    图片处理工具(以windows画图板为例);
    字模工具(以CT1为例)。
最好能有较充足的单位时间

2.2、文本的汉化

打开FC DEBUG,点开背景及图案,并加载ROM


那么,现在来对标题画面的“PUSH START BUTTON”进行汉化

首先我们需要知道这串字符的代码,分别点击“背景”窗口上的“PUSH START BUTTON”,
很容易我们就能知道,“PUSH START BUTTON”的代码为:“
50 55 53 48 20 53 54 41 52 54 20 42 55 54 54 4F 4E”
(如果你有经验的话,一眼就能看出这其实就是标准的ASCII编码)

要汉化就必须要有中文的字模,现在,打开CT,载入ROM,并寻找字库,


OK,在(地址:D210 h)的地方找到了游戏的字库。
(要注意的是,这个游戏有2个字库,一个是游戏里用的,一个是像标题画面,接关画面这样的地方用的,具体哪个才是需要的字库可以根据“图案”窗口来判断)

“PUSH START BUTTON”的意思是“按开始键”
于是我们便把“按开始键”这几个字做成字模(注意颜色要一致),并覆盖原字库的ABCD。
(ABCD的编码分别为41 42 43 44,这个只要通过“图案”窗口就能知道)


(注意,如果你的Tile察看器与十六进制编辑器是不同的2个软件,一定要记得保存!并且要记得随时刷新ROM文件)

接下来就要来修改代码了,打开CT的十六进制编辑器功能(就是下图的Hex)(要记得先把光标定义在开头)


按下Ctrl+F,输入“PUSH START BUTTON”的其中几个代码:50 55 53 48
(这里不推荐输入全部代码,虽然这样做可以更加精确地查找,但是如果ROM里的编码不是这样排的话,就找不到了,具体参考Part1 1.1的内容)


按下“查找下一个”,但是却没反应,说明说ROM里没有这样的编码。
那我们再缩短一下输入的代码,嗯……就只输5553吧
经过几次查找,我们在(3E20 h)这个地方找到了文本


可以看到,文本不是按顺序排列,而是每隔2个字节就插入2020


我们试着把PUSH的编码(50 55 53 48)改成(41 42 43 44),保存

现在到游戏中看看效果:


可以看到,原本是PUSH的地方现在已经被我们改成了“按开始键”

(或许大家已经注意到了,标题画面中凡是出现ABCD的地方都变成了中文字,这是因为我们刚才修改了字库,而ABCD并不是只有这里才有用到,所以也要对其他的文本进行修改)

现在图里显示的效果是“按开始键ST按RT 开UTTON”
假如去掉修改字模这个步骤的话,那么屏幕上显示的则是“ABCDSTART BUTTON”。

因为我们修改了字模(A=按 B=开 C=始 D=键)
所以“STARTBUTTON”里的A、B就会变成“按”和“开”(这就是所谓的乱码)

要去除乱码,就要把“PUSH START BUTTON”这串字符里无用的数据删掉,换言之就是要显示什么就留什么
大家稍微看下文本的编码就会发现,20是填充符(也就是空格),


所以按照刚才所说,把“START BUTTON”的编码都改成20,只留下ABCD的编码(41 42 43 44)
会发现屏幕上就只剩下“按开始键”这4个字了
现在字偏在左边,不好看,可以稍微调整一下编码的位置。(可以看一下教程提供的那个参考ROM)

按照以上方法,我们再对标题画面其他文本进行修改。

OK,效果还算不错。


文本部分就讲到这里,剩下的文本汉化方法大同小异,就不再罗嗦了。
PS:这个游戏的文本的编码除这里之外都是按顺序排列的

2.3、图片的汉化

有些字以非正常文本的形式出现,可以称之为图片


红框中的即为图片
EX是导出图片,IM是导入图片

2.3.1、非LOGO图片

一般来说,这类图片都很完整,只要简单的覆盖就行。
(有些图片在ROM里可能不是按顺序显示,这时就需要自己拼图)
(还有的图片有压缩,需要像汉化文本那样去修改编码)

把CT换回Tile显示模式(再次点击工具栏里的Hex就行),调到BC10 h这里


像这种比较简单的图片,就不必导出了,直接把字打上去即可。


保存,回到游戏中去看看效果吧。

2.3.2、LOGO汉化

首先说明一点,这个ROM的LOGO比较特殊,一开始只有IPU这3个字母是属于背景图层的,等到动画完了之后FLIPULL这几个字母才都在背景图层上。
(也就是说,LOGO不是一下子就出现,而是逐步出现的)

我们先试着分析一下LOGO,通过分析,我们可以得知,LOGO的图片是以压缩覆盖(具体看Part1 1.2)的形式存在,不过好在图片空间很充裕。
根据截图,做好汉化LOGO(可以使用一些比较正正方方的字体)。


并导入ROM中

打开FC DEBUG的VRAM,


红框部分即为LOGO的编码。
在CT中查找86 71 71 8C,从ROM中的编码可以看出,“IPU”的编码是以2个字节为一组,除此之外是4字节一组,之后根据你的LOGO图片所放位置,修改LOGO编码。
PS:由于此ROM的LOGO要修改的地方多且杂,就不详写了,有兴趣的自己研究研究。

最终效果:

2.4、结束

以上就是汉化一个FC游戏的基本过程。
在做完以上步骤后,还要对游戏进行测试,看看有没有漏掉的地方或乱码。

Part 3 小技巧

本部分依旧以Flipull这个游戏为例

3.1、巧妙增加字库容量

在不会写程序扩容的情况下,FC那小小的字库显然不能满足汉化的需要,这时就能用下面这2种方法来增加字库容量。

1、充分利用剩余空间



ROM中或多或少有一些没有用到的Tile(红框),我们就可以把它们利用起来做字库

2、向图片要空间

在汉化图片时我们可以把图片做小一点,这样就能利用原本用来存放图片的空间来做字库

3.2、伪•大字体

首先先来一张效果图


效果还不错吧~
现在,我来讲讲怎么制作。
首先,调到(3E20 H)这里。(就是PUSH START BUTTON的地址)
那么,把这里改成这样:


现在来看游戏画面:


现在,可以很清楚的看到PUSH START BUTTON这些字的排列方法(按数字顺序):
① ② ⑤ ⑥
③ ④ ⑦ ⑧

有些人可能已经发现,上面那行不就是文本里的2020组成的吗?(忘记的人自觉回到前面看)
不错,我们就是利用它来做大字。
接下来,只要做好大字模,再调整一下代码就OK了~

此法的优缺点:
优点:
    就算你不会6502,也能做出大字体
缺点:
    1、很显然,此法受到ROM文本存放方法的限制,如果不能满足条件,就没办法使用;
    2、大字模是很耗费空间的,一般来说,1个字就得占用4个tile,如果字库空间不充裕,也没办法使用。